**101.2** Загрузка системы

Студент должен разбираться в процессе загрузки системы.

**Изучаем** :

- команды и опции загрузчика;
- настройку последовательности загрузки в BIOS;
- включение и выключение ПК;
- стили инициализации системы;
- журналы загрузки системы.

**Термины и утилиты:****        **

- dmesg
- BIOS
- bootloader
- kernel
- initramfs
- init
- SysVinit
- systemd

Процесс загрузки любой операционной системы, представляющий собой последовательную работу ряда программных и аппаратных компонентов ПК, будет рассмотрен в этом уроке.

Вкратце процесс загрузки выглядит так:

- при старте ПК процессор переходит на адрес BIOS (UEFI) и загружает его;

- BIOS (или современный UEFI) проводит необходимые проверки, выбирает согласно своим настройкам носитель информации;

- на носителе находит MBR (или GPT для UEFI) в которой находится загрузчик;

- дальше по обстоятельствам: загрузчик может загружать ОС, может передать управление следующему загрузчику по цепочке;

- в любом случае загрузчик знает где лежит ядро ОС, грузит его и InitialRamDisk (там конфигурационные файлы и модули необходимые для загрузки ядра) в оперативную память;

- загруженное ядро берет дальнейший процесс запуска на себя (инициализация устройств, конфигурирование процессора, памяти и т.д.)

- после всех инициализационных процедур ядро запускает процедуры инициализации всех необходимых служб ОС.

 ![]()

_Рисунок 1. Порядок загрузки ОС_

Существуют различные загрузчик ОС, например Lilo и Grub для Linux, NTLDR для Windows и т.д. Все они, как правило, имеют файл конфигурации самого загрузчика (_формат диалога загрузки, таймауты для выбора варианта загрузки, поле для ввода дополнительных опций и т.д_.) и секцию доступных для загрузки образов ОС.

Подробно стили инициализации и загрузчики рассматриваются в дальнейших уроках. Для успешного освоения данной темы необходимо знать, что в момент загрузки можно нажать выделенные клавиши (_как, правило, отличающиеся у разных загрузчиков_), и выбрать ОС для запуска или указать дополнительные опции загрузки.

При работе с загрузчиком можно увидеть следующие понятия:

- **uuid** – идентификатор носителя информации с установленной ОС;
- **kernel** – путь к ядру ОС;
- **initrd** – путь к минимальному образу ядра для загрузки в оперативную память;
- **quiet** – не показывать процесс загрузки;
- **splash** – показать заставку при загрузке.

Вся информация о загрузке хранится в журнале **/**** var ****/**** log ****/**** dmesg**_(журнал событий ядра)_, при этом данные о последней загрузке можно получить, выполнив команду**dmesg ****.** Также события загрузки могут располагаться в журнале **/**** var ****/**** log ****/**** boot ****.**** log **. В современных ОС события загрузки можно увидеть при помощи утилиты** journalctl **, например командой** journalctl -b0 SYSLOG\_PID=1**

Процесс инициализации системы будет рассмотрен подробно в дальнейших уроках, на данном этапе нужно знать о существование трех стилей инициализации:

- **SysV** – родительский процесс инициализации системы на одном из заданных уровней запуска (runlevel);
- **systemd** – родительский процесс инициализацию системы в ускоренном режиме, за счёт параллельного запуска задач;
- **upstart** – родительский процесс инициализации системы на основе отслеживания событий.